/**
 * @file timer.c
 * @brief  timer驱动程序
 * @author 王晓荣
 * @version 
 * @date 2014-03-22
 */

#include "timer.h"                  // Device header

static uint8_t timer5_flg  = 0;

/**
 * @brief timer5配置
 */
void timer5_config(void)
{
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    uint8_t                  priority;	
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);

    /** 定时器时钟频率设为：72M/7200 = 10000 */
    TIM_TimeBaseStructure.TIM_Prescaler     = (7200 - 1);	/**< 分频系数：7200  (取值范围为0x0000-0xffff)	*/
    /** 定时时间：10000 * 1/10000 = 1s */
	TIM_TimeBaseStructure.TIM_Period        = (10000 - 1);	/**< 定时周期数：10000 */		
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;			/**< 定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)采样频率之间的分频比例 	*/	
	TIM_TimeBaseStructure.TIM_CounterMode   = TIM_CounterMode_Up;	/**< 向上计数 	*/	
	TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);		    /**< 初始化TIM5	*/	
    
	TIM_ClearITPendingBit(TIM5, TIM_IT_Update);				/**< 清除TIM5溢出标志 */		
	TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);				/**< 开TIM5中断	 	*/	
	TIM_Cmd(TIM5, ENABLE);									/**< TIM5开始计数*/	
		
	/** 优先级配置 */
    NVIC_EnableIRQ(TIM5_IRQn);                             //  Enable External Interrupt
    priority = NVIC_EncodePriority(5, 1, 1); 
    NVIC_SetPriority(TIM5_IRQn, priority);                 //Set Interrupt Priority  
}

uint8_t read_timer5_flg(void)
{
    return timer5_flg;
} 

void clr_timer5_flg(void)
{
    timer5_flg = 0;
}

/**
* @brief SysTick中断服务函数
 */
void TIM5_IRQHandler(void)
{
	timer5_flg = 1; 
    TIM_ClearITPendingBit(TIM5, TIM_IT_Update);     	/**< 清除TIM5溢出标志 */	
}


